package com.valuegroup.smarttodo.data.model;

import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Id;
import org.greenrobot.greendao.annotation.NotNull;

import java.io.Serializable;
import java.util.Date;

import org.greenrobot.greendao.annotation.Generated;

/**
 * 任务
 */
@Entity
public class Task implements Serializable {
    private static final long serialVersionUID = 2000421555342440402L;
    @Id(autoincrement = true)
    private Long id;

    private String title;
    // 地点
    private String site;

    // 任务类型 @TaskType
    private Integer taskType;
    // 来源(事件ID)
    private Long sourceId;

    // 预计时长
    private Integer preMinute;
    // 计划开始时间（yyyy-MM-dd HH:mm）
    private Date startDt;
    // 截止时间（yyyy-MM-dd）
    @NotNull
    private Date deadline;

    // 重要紧急四象限
    private Integer quadrant;

    // 提醒类型（依赖开始时间）
    private Integer remindType;
    // 重复类型（依赖开始时间）
    private Integer repeatType;
    // 具体提醒时间
    private Date remindDt;
    // 具体重复规则 Cron 表达式
    private String repeatCron;

    // 是否过期
    private Boolean isPastDue;
    // 是否完成
    private Boolean isFinish;
    // 任务完成时间
    private Date finishDt;
    // 是否星标
    private Boolean isStar;


    private Integer sort;
    @NotNull
    private Date createdDt;
    @NotNull
    private Date updatedDt;
    @NotNull
    private Integer status;
    @Generated(hash = 1736874736)
    public Task(Long id, String title, String site, Integer taskType, Long sourceId,
            Integer preMinute, Date startDt, @NotNull Date deadline,
            Integer quadrant, Integer remindType, Integer repeatType, Date remindDt,
            String repeatCron, Boolean isPastDue, Boolean isFinish, Date finishDt,
            Boolean isStar, Integer sort, @NotNull Date createdDt,
            @NotNull Date updatedDt, @NotNull Integer status) {
        this.id = id;
        this.title = title;
        this.site = site;
        this.taskType = taskType;
        this.sourceId = sourceId;
        this.preMinute = preMinute;
        this.startDt = startDt;
        this.deadline = deadline;
        this.quadrant = quadrant;
        this.remindType = remindType;
        this.repeatType = repeatType;
        this.remindDt = remindDt;
        this.repeatCron = repeatCron;
        this.isPastDue = isPastDue;
        this.isFinish = isFinish;
        this.finishDt = finishDt;
        this.isStar = isStar;
        this.sort = sort;
        this.createdDt = createdDt;
        this.updatedDt = updatedDt;
        this.status = status;
    }
    @Generated(hash = 733837707)
    public Task() {
    }
    public Long getId() {
        return this.id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getTitle() {
        return this.title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getSite() {
        return this.site;
    }
    public void setSite(String site) {
        this.site = site;
    }
    public Integer getTaskType() {
        return this.taskType;
    }
    public void setTaskType(Integer taskType) {
        this.taskType = taskType;
    }
    public Long getSourceId() {
        return this.sourceId;
    }
    public void setSourceId(Long sourceId) {
        this.sourceId = sourceId;
    }
    public Integer getPreMinute() {
        return this.preMinute;
    }
    public void setPreMinute(Integer preMinute) {
        this.preMinute = preMinute;
    }
    public Date getStartDt() {
        return this.startDt;
    }
    public void setStartDt(Date startDt) {
        this.startDt = startDt;
    }
    public Date getDeadline() {
        return this.deadline;
    }
    public void setDeadline(Date deadline) {
        this.deadline = deadline;
    }
    public Integer getQuadrant() {
        return this.quadrant;
    }
    public void setQuadrant(Integer quadrant) {
        this.quadrant = quadrant;
    }
    public Integer getRemindType() {
        return this.remindType;
    }
    public void setRemindType(Integer remindType) {
        this.remindType = remindType;
    }
    public Integer getRepeatType() {
        return this.repeatType;
    }
    public void setRepeatType(Integer repeatType) {
        this.repeatType = repeatType;
    }
    public Date getRemindDt() {
        return this.remindDt;
    }
    public void setRemindDt(Date remindDt) {
        this.remindDt = remindDt;
    }
    public String getRepeatCron() {
        return this.repeatCron;
    }
    public void setRepeatCron(String repeatCron) {
        this.repeatCron = repeatCron;
    }
    public Boolean getIsPastDue() {
        return this.isPastDue;
    }
    public void setIsPastDue(Boolean isPastDue) {
        this.isPastDue = isPastDue;
    }
    public Boolean getIsFinish() {
        return this.isFinish;
    }
    public void setIsFinish(Boolean isFinish) {
        this.isFinish = isFinish;
    }
    public Date getFinishDt() {
        return this.finishDt;
    }
    public void setFinishDt(Date finishDt) {
        this.finishDt = finishDt;
    }
    public Boolean getIsStar() {
        return this.isStar;
    }
    public void setIsStar(Boolean isStar) {
        this.isStar = isStar;
    }
    public Integer getSort() {
        return this.sort;
    }
    public void setSort(Integer sort) {
        this.sort = sort;
    }
    public Date getCreatedDt() {
        return this.createdDt;
    }
    public void setCreatedDt(Date createdDt) {
        this.createdDt = createdDt;
    }
    public Date getUpdatedDt() {
        return this.updatedDt;
    }
    public void setUpdatedDt(Date updatedDt) {
        this.updatedDt = updatedDt;
    }
    public Integer getStatus() {
        return this.status;
    }
    public void setStatus(Integer status) {
        this.status = status;
    }


}
